﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;
using CimeaSoft.BE;
using CimeaSoft.BL;
using Microsoft.Practices.Unity;
using System.Linq;
using System.Drawing;

namespace CimeaSoft.UI
{
    public partial class FrmMuestreo : Telerik.WinControls.UI.RadForm
    {
        [Dependency]
        public IMuestraBL muestraBL { get; set; }

        [Dependency]
        public ILocalizacionBL localizaBL { get; set; }

        [Dependency]
        public IParamCampoBL paramCampoBL { get; set; }

        [Dependency]
        public ICondMeterologicasBL condMeteroBL { get; set; }

        [Dependency]
        public IParFisOrganolepticosBL parFisOrganoBL { get; set; }

        [Dependency]
        public IMuestraResumenBL muesResumBL { get; set; }

        #region Dependencias RiosAndinos

        [Dependency]
        public ICuencaBL cuencaBL { get; set; }

        [Dependency]
        public IHidrologiaBL hidroBL { get; set; }

        [Dependency]
        public ITramoBL tramoBL { get; set; }

        [Dependency]
        public ILechoBL lechoBL { get; set; }

#endregion

        #region Dependencias RiosAndinos/3500

        [Dependency]
        public ICuenca2BL cuenca2BL { get; set; }

        [Dependency]
        public IHidrologia2BL hidro2BL { get; set; }

        [Dependency]
        public ITramo2BL tramo2BL { get; set; }

        [Dependency]
        public ILecho2BL lecho2BL { get; set; }

        #endregion

        #region Dependencias IHF

        [Dependency]
        public IIncluRapidosBL incRapidosBL { get; set; }

        [Dependency]
        public IFrecuRapidosBL frecRapidosBL { get; set; }

        [Dependency]
        public ICompSubstratoBL compSubstratoBL { get; set; }

        [Dependency]
        public IRegimenVelocidadBL regVelocidadBL { get; set; }

        [Dependency]
        public IPorcCauseBL porCauseBL { get; set; }

        [Dependency]
        public IElementosBL elementosBL { get; set; }

        [Dependency]
        public ICobVegetacionBL cobVegetacionBL { get; set; }

        #endregion

        #region Dependencias QBR

        [Dependency]
        public IGradoCubiertaBL gradCubiertaBL { get; set; }

        [Dependency]
        public IEstruCubiertaBL estrCubiertaBL { get; set; }

        [Dependency]
        public ICalidCubiertaBL caldCubiertaBL { get; set; }

        [Dependency]
        public IGradoNaturalidadBL gradNaturalidadBL { get; set; }

        #endregion

        #region Dependencias QBR2

        [Dependency]
        public IGradoCubierta2BL gradCubierta2BL { get; set; }

        [Dependency]
        public ICalidCubierta2BL calidCubierta2BL { get; set; }

        [Dependency]
        public IGradoNaturalidad2BL gradNaturalidad2BL { get; set; }

        #endregion

        #region Dependencia ABI - MUESTRA

        [Dependency]
        public IAbiBL abiBL { get; set; }

        #endregion

        public FrmMuestreo()
        {
            InitializeComponent();
            this.BuilUp();
        }

        //variables RiosAndinos
        int tCuenca=0, tHidrologia=0, tTramo=0, tLecho=0;

        //variables RiosAndinos/3500
        int tCuenca2=0, tHidrologia2=0, tTramo2=0, tLecho2=0;

        //variables IHF
        int tIncRapidos=0, tFrecRapidos=0, tCompSubstrato=0, tRegVelocidad=0, tPorCause=0, tElementos=0, tCobVegetacion=0;

        //variables QBR
        int tGradCubierta=0, tEstrCubierta=0, tCalCubierta=0, tGradNaturalidad=0;

        //variables QBR2
        int tGradCubierta2=0, tCalCubierta2=0, tGradNaturalidad2=0;

        //variables ABI
        int tAbi=0;

        private void FrmMuestreo_Load(object sender, EventArgs e)
        {
            cargaData();
            muestraBindingSource.AddNew();
            localizacionBindingSource.AddNew();
            parametrosCampoBindingSource.AddNew();
            condiMetereologicaBindingSource.AddNew();
            paramFisicOrganolepticoBindingSource.AddNew();
        }

        public void cargaData()
        {
            //Rios Andinos
            cuencaBindingSource.DataSource = cuencaBL.GetAllFromCuenca();
            hidrologiaBindingSource.DataSource = hidroBL.GetAllFromHidrologia();
            tramoBindingSource.DataSource = tramoBL.GetAllFromTramo();
            lechoBindingSource.DataSource = lechoBL.GetAllFromLecho();

            //Rios Andinos /3500 msnm
            cuenca2BindingSource.DataSource = cuenca2BL.GetAllFromCuenca2();
            hidrologia2BindingSource.DataSource = hidro2BL.GetAllFromHidrologia2();
            tramo2BindingSource.DataSource = tramo2BL.GetAllFromTramo2();
            lecho2BindingSource.DataSource = lecho2BL.GetAllFromLecho2();

            //IHF
            incluRapidoBindingSource.DataSource = incRapidosBL.GetAllFromIncluRapido();
            frecuRapidoBindingSource.DataSource = frecRapidosBL.GetAllFromFrecuRapidos();
            compSubstratoBindingSource.DataSource = compSubstratoBL.GetAllFromCompSubstrato();
            regimVelocidadBindingSource.DataSource = regVelocidadBL.GetAllFromRegimVelocidad();
            porcCauseBindingSource.DataSource = porCauseBL.GetAllFromPorcCause();
            elementoBindingSource.DataSource = elementosBL.GetAllFromElemtos();
            cobVegetacionBindingSource.DataSource = cobVegetacionBL.GetAllFromCobVegetacion();

            //QBR
            gradCubiertaBindingSource.DataSource = gradCubiertaBL.GetAllFromGradoCubierta();
            estruCubiertaBindingSource.DataSource = estrCubiertaBL.GetAllFromEstruCubierta();
            calidCubiertaBindingSource.DataSource = caldCubiertaBL.GetAllFromCalidCubierta();
            gradoNaturalidadBindingSource.DataSource = gradNaturalidadBL.GetAllFromGradoNaturalidad();

            //QBR/3500msnm
            gradCubierta2BindingSource.DataSource = gradCubierta2BL.GetAllFromGradoCubierta2();
            calidCubierta2BindingSource.DataSource = calidCubierta2BL.GetAllFromCalidCubierta2();
            gradoNaturalidad2BindingSource.DataSource = gradNaturalidad2BL.GetAllFromGradoNaturalidad2();

            //ABI
            abiBindingSource.DataSource = abiBL.GetAllFromAbi();
        }

        #region Calculo de RiosAndinos

        public void CalcularCuenca()
        {
            var listCuenca = cuencaBindingSource.DataSource as List<Cuenca>;

            var cP = int.Parse(listCuenca.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var cM = int.Parse(listCuenca.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var cMu = int.Parse(listCuenca.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalCuenca.Text = Convert.ToString(cP + cM + cMu);
            tCuenca = cP + cM + cMu;
        }

        public void CalcularHidrologia()
        {
            var listHidrologia = hidrologiaBindingSource.DataSource as List<Hidrologia>;

            var hP = int.Parse(listHidrologia.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var hM = int.Parse(listHidrologia.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var hMu = int.Parse(listHidrologia.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalHidrologia.Text = Convert.ToString(hP + hM + hMu);
            tHidrologia = hP + hM + hMu;
        }

        public void CalcularTramo()
        {
            var listTramo = tramoBindingSource.DataSource as List<Tramo>;

            var tP = int.Parse(listTramo.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var tM = int.Parse(listTramo.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var tMu = int.Parse(listTramo.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalTramo.Text = Convert.ToString(tP + tM + tMu);

            tTramo = tP + tM + tMu;
        }

        public void CalcularLecho()
        {
            var listLecho = lechoBindingSource.DataSource as List<Lecho>;

            var lP = int.Parse(listLecho.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var lM = int.Parse(listLecho.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var lMu = int.Parse(listLecho.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalLecho.Text = Convert.ToString(lP + lM + lMu);

            tLecho = lP + lM + lMu;
        }

        private void cuencaDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCuenca();
        }

        private void hidrologiaDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularHidrologia();
        }

        private void tramoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularTramo();
        }

        private void lechoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularLecho();
        }

        #endregion

        #region Calculo de RiosAndinos/3500msnm

        public void CalcularCuenca2()
        {
            var listCuenca2 = cuenca2BindingSource.DataSource as List<Cuenca2>;

            var c2P = int.Parse(listCuenca2.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var c2M = int.Parse(listCuenca2.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var c2Mu = int.Parse(listCuenca2.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalCuenca2.Text = Convert.ToString(c2P + c2M + c2Mu);
            tCuenca2 = c2P + c2M + c2Mu;
        }

        public void CalcularHidrologia2()
        {
            var listHidrologia2 = hidrologia2BindingSource.DataSource as List<Hidrologia2>;

            var h2P = int.Parse(listHidrologia2.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var h2M = int.Parse(listHidrologia2.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var h2Mu = int.Parse(listHidrologia2.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalHidrologia2.Text = Convert.ToString(h2P + h2M + h2Mu);
            tHidrologia2 = h2P + h2M + h2Mu;
        }

        public void CalcularTramo2()
        {
            var listTramo2 = tramo2BindingSource.DataSource as List<Tramo2>;

            var t2P = int.Parse(listTramo2.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var t2M = int.Parse(listTramo2.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var t2Mu = int.Parse(listTramo2.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalTramo2.Text = Convert.ToString(t2P + t2M + t2Mu);
            tTramo2 = t2P + t2M + t2Mu;
        }

        public void CalcularLecho2()
        {
            var listLecho2 = lecho2BindingSource.DataSource as List<Lecho2>;

            var l2P = int.Parse(listLecho2.Where(c => c.ChkP == true)
                .Sum(c => c.Poco).ToString());

            var l2M = int.Parse(listLecho2.Where(c => c.ChkM == true)
                .Sum(c => c.Medio).ToString());

            var l2Mu = int.Parse(listLecho2.Where(c => c.ChkMu == true)
                .Sum(c => c.Mucho).ToString());

            lblTotalLecho2.Text = Convert.ToString(l2P + l2M + l2Mu);
            tLecho2 = l2P + l2M + l2Mu;
        }

        private void cuenca2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCuenca2();
        }

        private void hidrologia2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularHidrologia2();
        }

        private void tramo2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularTramo2();
        }

        private void lecho2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularLecho2();
        }

        #endregion

        #region Calculo de IHF

        public void CalcularIncRapidos()
        {
            var listIncRapidos = incluRapidoBindingSource.DataSource as List<IncluRapido>;

            var irP = int.Parse(listIncRapidos.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalIcRapidos.Text = Convert.ToString(irP);
            tIncRapidos = irP;
        }

        public void CalcularFrecRapidos()
        {
            var listFrecRapidos = frecuRapidoBindingSource.DataSource as List<FrecuRapido>;

            var frP = int.Parse(listFrecRapidos.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalFrecRapidos.Text = Convert.ToString(frP);
            tFrecRapidos = frP;
        }

        public void CalcularCompSubstrato()
        {
            var listCompSubstrato = compSubstratoBindingSource.DataSource as List<CompSubstrato>;

            var csP = int.Parse(listCompSubstrato.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalSompSubstrato.Text = Convert.ToString(csP);
            tCompSubstrato = csP;
        }

        public void CalcularRegVelocidad()
        {
            var listRegVelocidad = regimVelocidadBindingSource.DataSource as List<RegimVelocidad>;

            var rvP = int.Parse(listRegVelocidad.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalRegVelocidad.Text = Convert.ToString(rvP);
            tRegVelocidad = rvP;
        }

        public void CalcularPorSombra()
        {
            var listPorSombra = porcCauseBindingSource.DataSource as List<PorcCause>;

            var psP = int.Parse(listPorSombra.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalPorcCause.Text = Convert.ToString(psP);
            tPorCause = psP;
        }

        public void CalcularElementos()
        {
            var listElementos = elementoBindingSource.DataSource as List<Elemento>;

            var eP = int.Parse(listElementos.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalELementos.Text = Convert.ToString(eP);
            tElementos = eP;
        }

        public void CalcularCobVegetacion()
        {
            var listCobVegetacion = cobVegetacionBindingSource.DataSource as List<CobVegetacion>;

            var cvgP = int.Parse(listCobVegetacion.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalCobVegetacion.Text = Convert.ToString(cvgP);
            tCobVegetacion = cvgP;
        }

        private void incluRapidoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularIncRapidos();
        }

        private void frecuRapidoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularFrecRapidos();
        }

        private void compSubstratoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCompSubstrato();
        }

        private void regimVelocidadDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularRegVelocidad();
        }

        private void porcCauseDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularPorSombra();
        }

        private void elementoDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularElementos();
        }

        private void cobVegetacionDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCobVegetacion();
        }

        #endregion

        #region Calculo QBR

        public void CalcularGradCubierta()
        {
            var listGradCubierta = gradCubiertaBindingSource.DataSource as List<GradCubierta>;

            var gcP = int.Parse(listGradCubierta.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalGradCubierta.Text = Convert.ToString(gcP);
            if (Convert.ToInt32(lblTotalGradCubierta.Text) > 25 || Convert.ToInt32(lblTotalGradCubierta.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tGradCubierta = gcP;
        }

        public void CalcularEstrCubierta()
        {
            var listEstrCubierta = estruCubiertaBindingSource.DataSource as List<EstruCubierta>;

            var ecP = int.Parse(listEstrCubierta.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalEstrCubierta.Text = Convert.ToString(ecP);
            if (Convert.ToInt32(lblTotalEstrCubierta.Text) > 25 || Convert.ToInt32(lblTotalEstrCubierta.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tEstrCubierta = ecP;
        }

        public void CalcularCalidCubierta()
        {
            var listCalidCubierta = calidCubiertaBindingSource.DataSource as List<CalidCubierta>;

            var ccP = int.Parse(listCalidCubierta.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalCalidCubierta.Text = Convert.ToString(ccP);
            if (Convert.ToInt32(lblTotalCalidCubierta.Text) > 25 || Convert.ToInt32(lblTotalCalidCubierta.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tCalCubierta = ccP;
        }

        public void CalcularGradNaturalidad()
        {
            var listGradNaturalidad = gradoNaturalidadBindingSource.DataSource as List<GradoNaturalidad>;

            var gnP = int.Parse(listGradNaturalidad.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalGradNaturalidad.Text = Convert.ToString(gnP);
            if (Convert.ToInt32(lblTotalGradNaturalidad.Text) > 25 || Convert.ToInt32(lblTotalGradNaturalidad.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tGradNaturalidad = gnP;
        }

        private void gradCubiertaDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularGradCubierta();
        }

        private void estruCubiertaDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularEstrCubierta();
        }

        private void calidCubiertaDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCalidCubierta();
        }

        private void gradoNaturalidadDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularGradNaturalidad();
        }

        #endregion

        #region Calculo QBR/3500 msnm

        public void CalcularGradCubierta2()
        {
            var listGradCubierta2 = gradCubierta2BindingSource.DataSource as List<GradCubierta2>;

            var gc2P = int.Parse(listGradCubierta2.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalGradCubierta2.Text = Convert.ToString(gc2P);
            if (Convert.ToInt32(lblTotalGradCubierta2.Text) > 25 || Convert.ToInt32(lblTotalGradCubierta2.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tGradCubierta2 = gc2P;
        }

        public void CalcularCalidCubierta2()
        {
            var listCalidCubierta2 = calidCubierta2BindingSource.DataSource as List<CalidCubierta2>;

            var cc2P = int.Parse(listCalidCubierta2.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalCalidCubierta2.Text = Convert.ToString(cc2P);
            if (Convert.ToInt32(lblTotalCalidCubierta2.Text) > 25 || Convert.ToInt32(lblTotalCalidCubierta2.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tCalCubierta2 = cc2P;
        }

        public void CalcularGradNaturalidad2()
        {
            var listGradNaturalidad2 = gradoNaturalidad2BindingSource.DataSource as List<GradoNaturalidad2>;

            var gn2P = int.Parse(listGradNaturalidad2.Where(c => c.ChkP == true)
                .Sum(c => c.Puntuacion).ToString());

            lblTotalGradNaturalidad2.Text = Convert.ToString(gn2P);
            if (Convert.ToInt32(lblTotalGradNaturalidad2.Text) > 25 || Convert.ToInt32(lblTotalGradNaturalidad2.Text) < 0)
            {
                MessageBox.Show("La puntuación no puede exceder de 25 puntos o ser negativa", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            tGradNaturalidad2 = gn2P;
        }

        private void gradCubierta2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularGradCubierta2();
        }

        private void calidCubierta2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularCalidCubierta2();
        }

        private void gradoNaturalidad2DataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularGradNaturalidad2();
        }

        #endregion

        #region Calculo ABI

        public void CalcularABI()
        {
            var listABI = abiBindingSource.DataSource as List<Abi>;

            var abiP = int.Parse(listABI.Where(c => c.Abundancia == true)
                .Sum(c => c.ABI1).ToString());

            lblTotalAbi.Text = Convert.ToString(abiP);
            tAbi = abiP;
        }

        private void abiDataGridView_CurrentCellChanged(object sender, EventArgs e)
        {
            CalcularABI();
        }

        #endregion

        private void btnCalcular_Click(object sender, EventArgs e)
        {
            
        }

        public void MensajeIHF()
        {
            var ihf = int.Parse(lblTotalIHF.Text);
            if (ihf > 75)
            {
                lblMsjIHF.Text = "Habitat Adecuada";
                pnlMsjIhf.BackColor = Color.Blue;
            }
            else if (ihf >= 40 && ihf <= 75)
            {
                lblMsjIHF.Text = "Habitat con Limitaciones";
                pnlMsjIhf.BackColor = Color.Yellow;
            }
            else if (ihf < 40)
            {
                lblMsjIHF.Text = "Habitat Limitante";
                pnlMsjIhf.BackColor = Color.Red;
            }
        }

        public void MensajeABI()
        {
            var abi = int.Parse(lblTotalAbi.Text);
            if (abi > 74)
            {
                lblMsjAbi.Text = "Muy Bueno";
                pnlMsjAbi.BackColor = Color.Blue;
            }
            else if (abi >= 45 && abi <= 74)
            {
                lblMsjAbi.Text = "Bueno";
                pnlMsjAbi.BackColor = Color.GreenYellow;
            }
            else if (abi >= 27 && abi <= 44)
            {
                lblMsjAbi.Text = "Moderado";
                pnlMsjAbi.BackColor = Color.Yellow;
            }
            else if (abi >= 11 && abi <= 26)
            {
                lblMsjAbi.Text = "Malo";
                pnlMsjAbi.BackColor = Color.Orange;
            }
            else if (abi < 11)
            {
                lblMsjAbi.Text = "Pésimo";
                pnlMsjAbi.BackColor = Color.Red;
            }
        }

        public void MensajeQBR()
        {
            var qbr = int.Parse(lblTotalQBR.Text);
            if (qbr > 96)
            {
                lblMsjQBR.Text = "Muy Bueno";
                pnlMsjQbr.BackColor = Color.Blue;
            }
            else if (qbr>= 76 && qbr <= 96)
            {
                lblMsjQBR.Text = "Bueno";
                pnlMsjQbr.BackColor = Color.GreenYellow;
            }
            else if (qbr >= 51 && qbr <= 75)
            {
                lblMsjQBR.Text = "Moderado";
                pnlMsjQbr.BackColor = Color.Yellow;
            }
            else if (qbr >= 26 && qbr <= 50)
            {
                lblMsjQBR.Text = "Malo";
                pnlMsjQbr.BackColor = Color.Orange;
            }
            else if (qbr < 26)
            {
                lblMsjQBR.Text = "Pésimo";
                pnlMsjQbr.BackColor = Color.Red;
            }
        }

        public void MensajeQBR2()
        {
            var qbr2 = int.Parse(lblTotalQBR2.Text);
            if (qbr2 > 96)
            {
                lblMsjQBR2.Text = "Muy Bueno";
                pnlMsjQbr2.BackColor = Color.Blue;
            }
            else if (qbr2 >= 76 && qbr2 <= 96)
            {
                lblMsjQBR2.Text = "Bueno";
                pnlMsjQbr2.BackColor = Color.GreenYellow;
            }
            else if (qbr2 >= 51 && qbr2 <= 75)
            {
                lblMsjQBR2.Text = "Moderado";
                pnlMsjQbr2.BackColor = Color.Yellow;
            }
            else if (qbr2 >= 26 && qbr2 <= 50)
            {
                lblMsjQBR2.Text = "Malo";
                pnlMsjQbr2.BackColor = Color.Orange;
            }
            else if (qbr2 < 26)
            {
                lblMsjQBR2.Text = "Pésimo";
                pnlMsjQbr2.BackColor = Color.Red;
            }
        }

        public void MensajeRiosAndinos()
        {
            var ra = int.Parse(lblTotalRioAndino.Text);
            if (ra >= 100)
            {
                lblMsjRioAndino.Text = "Sirve como Referencia";
                pnlMsjRAndins.BackColor = Color.GreenYellow;
            }
            else if (ra < 100)
            {
                lblMsjRioAndino.Text = "No Sirve como Referencia";
                pnlMsjRAndins.BackColor = Color.Red;
            }
        }

        public void MensajeRiosAndinos2()
        {
            var ra2 = int.Parse(lblTotalRioAndino2.Text);
            if (ra2 >= 100)
            {
                lblMsjRioAndino2.Text = "Sirve como Referencia";
                pnlMsjRAndins3500.BackColor = Color.GreenYellow;
            }
            else if (ra2 < 100)
            {
                lblMsjRioAndino2.Text = "No Sirve como Referencia";
                pnlMsjRAndins3500.BackColor = Color.Red;
            }
        }
        
        //Agregar TOTAL de ABI y QBR para analizar.....
        private void btnAddCalidadAbi_Click(object sender, EventArgs e)
        {
            txtABI.Text = lblTotalAbi.Text;
        }

        private void btnAddCalidadQbr_Click(object sender, EventArgs e)
        {
            txtQBR.Text = lblTotalQBR.Text;
        }

        private void btnAddCalidadQbr2_Click(object sender, EventArgs e)
        {
            txtQBR.Text = lblTotalQBR2.Text;
        }

        private void btnCalcAbiQbr_Click(object sender, EventArgs e)
        {
            if (txtABI.Text != null && txtQBR.Text != null)
            {
                CalcularQbrAbi();
                btnGuardar.Enabled = true;
            }
            else
            {
                MessageBox.Show("Necesita completar los campos", "Mensaje", MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }

        //Calcular ABI - QBR
        public void CalcularQbrAbi()
        {
            var abi = int.Parse(txtABI.Text);
            var qbr = int.Parse(txtQBR.Text);

            if (abi < 27 && qbr < 45)
            {
                lblResultadoAbiQbr.Text = "PESIMO";
                pnlResultadoAbiQbr.BackColor = Color.Red;
            }
            else if (abi < 27 && qbr >= 45 && qbr <= 75)
            {
                lblResultadoAbiQbr.Text = "PESIMO";
                pnlResultadoAbiQbr.BackColor = Color.Red;
            }
            if (abi < 27 && qbr > 75)
            {
                lblResultadoAbiQbr.Text = "MALO";
                pnlResultadoAbiQbr.BackColor = Color.Orange;
            }
            else if (abi >= 27 && abi <= 44 && qbr < 45)
            {
                lblResultadoAbiQbr.Text = "PESIMO";
                pnlResultadoAbiQbr.BackColor = Color.Red;
            }
            else if (abi >= 27 && abi <= 44 && qbr >= 45 && qbr <= 75)
            {
                lblResultadoAbiQbr.Text = "MALO";
                pnlResultadoAbiQbr.BackColor = Color.Orange;
            }
            else if (abi >= 27 && abi <= 44 && qbr > 75)
            {
                lblResultadoAbiQbr.Text = "REGULAR";
                pnlResultadoAbiQbr.BackColor = Color.Yellow;
            }
            else if (abi >= 45 && abi <= 74 && qbr < 45)
            {
                lblResultadoAbiQbr.Text = "MALO";
                pnlResultadoAbiQbr.BackColor = Color.Orange;
            }
            else if (abi >= 45 && abi <= 74 && qbr >= 45 && qbr <= 75)
            {
                lblResultadoAbiQbr.Text = "REGULAR";
                pnlResultadoAbiQbr.BackColor = Color.Yellow;
            }
            else if (abi >= 45 && abi <= 74 && qbr > 75)
            {
                lblResultadoAbiQbr.Text = "BUENO";
                pnlResultadoAbiQbr.BackColor = Color.GreenYellow;
            }
            else if (abi > 74 && qbr < 45)
            {
                lblResultadoAbiQbr.Text = "REGULAR";
                pnlResultadoAbiQbr.BackColor = Color.Yellow;
            }
            else if (abi > 74 && qbr >= 45 && qbr <= 75)
            {
                lblResultadoAbiQbr.Text = "BUENO";
                pnlResultadoAbiQbr.BackColor = Color.GreenYellow;
            }
            else if (abi > 74 && qbr > 75)
            {
                lblResultadoAbiQbr.Text = "MUY BUENO";
                pnlResultadoAbiQbr.BackColor = Color.Blue;
            }
        }

        //validar CAMPOS numericos
        private void txtABI_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtQBR_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            var muestra = muestraBindingSource.Current as Muestra;
            var localizacion = localizacionBindingSource.Current as Localizacion;
            var parmCampo = parametrosCampoBindingSource.Current as ParametrosCampo;
            var condMeterologicas = condiMetereologicaBindingSource.Current as CondiMetereologica;
            var paramFisOrganolepticos = paramFisicOrganolepticoBindingSource.Current as ParamFisicOrganoleptico;
            var muestraResumen = new MuestraResumen();

                #region Listamos Cuencas

                var listCuenca = cuencaBindingSource.DataSource as List<Cuenca>;
                //var listCuencaCheck = (from c in listCuenca
                //                       where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                       select c).ToList();
                foreach (var item in listCuenca) 
                {
                    int totalC = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { totalC = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { totalC = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { totalC = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { totalC = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { totalC = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { totalC = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { totalC = 5; }
                    var mCuenca = new Muestra_Cuenca
                    {
                        IdMuestra = muestra.Id,
                        IdCuenca = item.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = totalC
                    };
                    muestra.Muestra_Cuenca.Add(mCuenca);
                }
                #endregion

                #region Listamos Hidrologia

                var listHidrologia = hidrologiaBindingSource.DataSource as List<Hidrologia>;
                //var listHidroCheck = (from c in listHidrologia
                //                      where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                      select c).ToList();
                foreach (var item in listHidrologia)
                {
                    int totalH = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { totalH = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { totalH = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { totalH = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { totalH = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { totalH = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { totalH = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { totalH = 5; }
                    var mHidrologia = new Muestra_Hidrologia
                    {
                        IdHidrologia = item.Id,
                        IdMuestra = muestra.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = totalH
                    };
                    muestra.Muestra_Hidrologia.Add(mHidrologia);
                }
                #endregion

                #region Listamos Tramo

                var listTramo = tramoBindingSource.DataSource as List<Tramo>;
                //var listTramoCheck = (from c in listTramo
                //                      where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                      select c).ToList();
                foreach (var item in listTramo)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mTramo = new Muestra_Tramo
                    {
                        IdMuestra = muestra.Id,
                        IdTramo = item.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Tramo.Add(mTramo);
                }
                #endregion

                #region Listamos Lecho

                var listLecho = lechoBindingSource.DataSource as List<Lecho>;
                //var listLechoCheck = (from c in listLecho
                //                      where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                      select c).ToList();
                foreach (var item in listLecho)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mLecho = new Muestra_Lecho
                    {
                        IdMuestra = muestra.Id,
                        IdLecho = item.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Lecho.Add(mLecho);
                }
                #endregion

                #region Listamos Cuenca2

                var listCuenca2 = cuenca2BindingSource.DataSource as List<Cuenca2>;
                //var lisCuenca2Check = (from c in listCuenca2
                //                       where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                       select c).ToList();
                foreach (var item in listCuenca2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mCuenca2 = new Muestra_Cuenca2
                    {
                        IdCuenca2 = item.Id,
                        IdMuestra = muestra.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Cuenca2.Add(mCuenca2);
                }
                #endregion

                #region Listamos Hidrologia2

                var listHidrologia2 = hidrologia2BindingSource.DataSource as List<Hidrologia2>;
                //var listHidro2Check = (from c in listHidrologia2
                //                       where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                       select c).ToList();
                foreach (var item in listHidrologia2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mHidrologia2 = new Muestra_Hidrologia2
                    {
                        IdHidrologia2 = item.Id,
                        IdMuestra = muestra.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Hidrologia2.Add(mHidrologia2);
                }
                #endregion

                #region Listamos Tramo2

                var listTramo2 = tramo2BindingSource.DataSource as List<Tramo2>;
                //var listTramo2Check = (from c in listTramo2
                //                       where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                       select c).ToList();
                foreach (var item in listTramo2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mTramo2 = new Muestra_Tramo2
                    {
                        IdMuestra = muestra.Id,
                        IdTramo2 = item.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Tramo2.Add(mTramo2);
                }
                #endregion

                #region Listamos Lecho2

                var listLecho2 = lecho2BindingSource.DataSource as List<Lecho2>;
                //var listLecho2Check = (from c in listLecho2
                //                       where c.ChkM == true || c.ChkMu == true || c.ChkP == true
                //                       select c).ToList();
                foreach (var item in listLecho2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(true)) { total = 9; }
                    if (item.ChkP.Equals(true) && item.ChkM.Equals(true) && item.ChkMu.Equals(false)) { total = 8; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(true) && item.ChkM.Equals(false)) { total = 6; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(true) && item.ChkP.Equals(false)) { total = 4; }
                    if (item.ChkM.Equals(true) && item.ChkMu.Equals(false) && item.ChkP.Equals(false)) { total = 3; }
                    if (item.ChkMu.Equals(true) && item.ChkM.Equals(false) && item.ChkP.Equals(false)) { total = 1; }
                    if (item.ChkP.Equals(true) && item.ChkMu.Equals(false) && item.ChkM.Equals(false)) { total = 5; }
                    var mLecho2 = new Muestra_Lecho2
                    {
                        IdMuestra = muestra.Id,
                        IdLecho2 = item.Id,
                        ChkM = item.ChkM,
                        ChkMu = item.ChkMu,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Lecho2.Add(mLecho2);
                }
                #endregion

                #region Listamos IncRapidos

                var listIncRapidos = incluRapidoBindingSource.DataSource as List<IncluRapido>;
                //var listIncRapidosCheck = (from c in listIncRapidos
                //                           where c.ChkP == true
                //                           select c).ToList();
                foreach (var item in listIncRapidos)
                {
                    int total=0;
                    if(item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mIncRapidos = new Muestra_IncluRapidos
                    {
                        IdIncluRapidos = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_IncluRapidos.Add(mIncRapidos);
                }
                #endregion

                #region Listamos FrecRapidos

                var listFrecRapidos = frecuRapidoBindingSource.DataSource as List<FrecuRapido>;
                //var listFrecRapidosCheck = (from c in listFrecRapidos
                //                            where c.ChkP == true
                //                            select c).ToList();
                foreach (var item in listFrecRapidos)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mFrecRapidos = new Muestra_FrecuRapidos
                    {
                        IdMuestra = muestra.Id,
                        IdFrecuRapidos = item.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_FrecuRapidos.Add(mFrecRapidos);
                }
                #endregion

                #region Listamos CompSubstrato

                var listCompSubstrato = compSubstratoBindingSource.DataSource as List<CompSubstrato>;
                //var listCompSubstratoCheck = (from c in listCompSubstrato
                //                              where c.ChkP == true
                //                              select c).ToList();
                foreach (var item in listCompSubstrato)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mCompSubstrato = new Muestra_CompSubstrato
                    {
                        IdCompSubstrato = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_CompSubstrato.Add(mCompSubstrato);
                }
                #endregion

                #region Listamos RegVelocidad

                var listRegVelocidad = regimVelocidadBindingSource.DataSource as List<RegimVelocidad>;
                //var listRegVelocidadCheck = (from c in listRegVelocidad
                //                             where c.ChkP == true
                //                             select c).ToList();
                foreach (var item in listRegVelocidad)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mRegVelocidad = new Muestra_RegimVelocidad
                    {
                        IdMuestra = muestra.Id,
                        IdRegimVelocidad = item.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_RegimVelocidad.Add(mRegVelocidad);
                }
                #endregion

                #region Listamos PorSombra

                var listPorSombra = porcCauseBindingSource.DataSource as List<PorcCause>;
                //var listPorSombraCheck = (from c in listPorSombra
                //                          where c.ChkP == true
                //                          select c).ToList();
                foreach (var item in listPorSombra)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mPorcSombra = new Muestra_PorcCause
                    {
                        IdMuestra = muestra.Id,
                        IdPorcCause = item.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_PorcCause.Add(mPorcSombra);
                }
                #endregion

                #region Listamos Elementos

                var listElementos = elementoBindingSource.DataSource as List<Elemento>;
                //var listElementosCheck = (from c in listElementos
                //                          where c.ChkP == true
                //                          select c).ToList();
                foreach (var item in listElementos)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mElementos = new Muestra_Elementos
                    {
                        IdElementos = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_Elementos.Add(mElementos);
                }
                #endregion

                #region Listamos CobVegetacion

                var listCobVegetacion = cobVegetacionBindingSource.DataSource as List<CobVegetacion>;
                //var listCobVegetacionCheck = (from c in listCobVegetacion
                //                              where c.ChkP == true
                //                              select c).ToList();
                foreach (var item in listCobVegetacion)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mCobVegetacion = new Muestra_CobVegetacion
                    {
                        IdCobVegetacion = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_CobVegetacion.Add(mCobVegetacion);
                }
                #endregion

                #region Listamos GradCubierta

                var listGradCubierta = gradCubiertaBindingSource.DataSource as List<GradCubierta>;
                //var listGradCubiertaCheck = (from c in listGradCubierta
                //                             where c.ChkP == true
                //                             select c).ToList();
                foreach (var item in listGradCubierta)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mGradCubierta = new Muestra_GradCubierta
                    {
                        IdGradCubierta = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_GradCubierta.Add(mGradCubierta);
                }
                #endregion

                #region Listamos EstrCubierta

                var listEstrCubierta = estruCubiertaBindingSource.DataSource as List<EstruCubierta>;
                //var listEstrCubiertaCheck = (from c in listEstrCubierta
                //                             where c.ChkP == true
                //                             select c).ToList();
                foreach (var item in listEstrCubierta)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mEstrCubierta = new Muestra_EstruCubierta
                    {
                        IdEstruCubierta = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_EstruCubierta.Add(mEstrCubierta);
                }
                #endregion

                #region Listamos CalidCubierta

                var listCalidCubierta = calidCubiertaBindingSource.DataSource as List<CalidCubierta>;
                //var listCalidCubiertaCheck = (from c in listCalidCubierta
                //                              where c.ChkP == true
                //                              select c).ToList();
                foreach (var item in listCalidCubierta)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mCalidCubierta = new Muestra_CalidCubierta
                    {
                        IdCalidCubierta = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_CalidCubierta.Add(mCalidCubierta);
                }
                #endregion

                #region Listamos GradNaturalidad

                var listGradNaturalidad = gradoNaturalidadBindingSource.DataSource as List<GradoNaturalidad>;
                //var listGradNaturalidadCheck = (from c in listGradNaturalidad
                //                                where c.ChkP == true
                //                                select c).ToList();
                foreach (var item in listGradNaturalidad)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mGradNaturalidad = new Muestra_GradoNaturalidad
                    {
                        IdGradoNaturalidad = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_GradoNaturalidad.Add(mGradNaturalidad);
                }
                #endregion

                #region Listamos GradCubierta2

                var listGradCubierta2 = gradCubierta2BindingSource.DataSource as List<GradCubierta2>;
                //var listGradCubierta2Check = (from c in listGradCubierta2
                //                              where c.ChkP == true
                //                              select c).ToList();
                foreach (var item in listGradCubierta2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mGradCubierta2 = new Muestra_GradCubierta2
                    {
                        IdGradCubierta2 = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_GradCubierta2.Add(mGradCubierta2);
                }
                #endregion

                #region Listamos CalidCubierta2

                var listCalidCubierta2 = calidCubierta2BindingSource.DataSource as List<CalidCubierta2>;
                //var listCalidCubierta2Check = (from c in listCalidCubierta2
                //                               where c.ChkP == true
                //                               select c).ToList();
                foreach (var item in listCalidCubierta2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mCalidCubierta2 = new Muestra_CalidCubierta2
                    {
                        IdCalidCubierta2 = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_CalidCubierta2.Add(mCalidCubierta2);
                }
                #endregion

                #region Listamos GradNaturalidad2

                var listGradNaturalidad2 = gradoNaturalidad2BindingSource.DataSource as List<GradoNaturalidad2>;
                //var listGradNaturalidad2Check = (from c in listGradNaturalidad2
                //                                 where c.ChkP == true
                //                                 select c).ToList();
                foreach (var item in listGradNaturalidad2)
                {
                    int total = 0;
                    if (item.ChkP.Equals(true)) { total = item.Puntuacion ?? default(Int32); }
                    var mGradNaturalidad2 = new Muestra_GradoNaturalidad2
                    {
                        IdGradoNaturalidad2 = item.Id,
                        IdMuestra = muestra.Id,
                        ChkP = item.ChkP,
                        Total = total
                    };
                    muestra.Muestra_GradoNaturalidad2.Add(mGradNaturalidad2);
                }
                #endregion

                #region Listamos ABI

                var listABI = abiBindingSource.DataSource as List<Abi>;
                var listAbiCheck = (from c in listABI
                                    where c.Abundancia == true
                                    select c).ToList();
                foreach (var item in listAbiCheck)
                {
                    int total = 0;
                    if (item.Abundancia.Equals(true)) { total = item.ABI1 ?? default(Int32); }
                    var mAbi = new Muestra_Abi
                    {
                        IdAbi = item.Id,
                        IdMuestra = muestra.Id,
                        Abundancia = item.Abundancia,
                        Total = total
                    };
                    muestra.Muestra_Abi.Add(mAbi);
                }
                #endregion

                if (muestra != null)
                {
                    muestra.Fecha = fechaDateTimePicker.Value;
                    muestra.Responsable = responsableTextBox.Text.ToUpper();
                    muestra.TipMuestra = tipMuestraTextBox.Text.ToUpper();
                    muestraBL.addMuestra(muestra);
                }
                if (localizacion != null)
                {
                    localizacion.CodFotografia = codFotografiaTextBox.Text.ToUpper();
                    localizacion.Cuenca = cuencaTextBox.Text.ToUpper();
                    localizacion.Estacion = estacionTextBox.Text.ToUpper();
                    localizacion.Rio = rioTextBox.Text.ToUpper();
                    localizacion.SubCuenca = subCuencaTextBox.Text.ToUpper();
                    localizacion.Altura = alturaTextBox.Text + " msnm";
                    localizacion.ActZonCercaPuntoMuestreo = actZonCercaPuntoMuestreoTextBox.Text.ToUpper();
                    localizacion.DescFisicaLugar = descFisicaLugarTextBox.Text.ToUpper();
                    localizacion.IdMuestra = muestra.Id;
                    localizaBL.addLocalizacion(localizacion);
                }
                if (parmCampo != null)
                {
                    parmCampo.Caudal = caudalTextBox.Text.ToUpper();
                    parmCampo.CondElectriAgua = condElectriAguaTextBox.Text.ToUpper();
                    parmCampo.Od = odTextBox.Text.ToUpper();
                    parmCampo.PhAgua = phAguaTextBox.Text.ToUpper();
                    parmCampo.tAgua = tAguaTextBox.Text.ToUpper();
                    parmCampo.tAire = tAireTextBox.Text.ToUpper();
                    parmCampo.IdMuestra = muestra.Id;
                    paramCampoBL.addParmCampo(parmCampo);
                }
                if (condMeterologicas != null)
                {
                    condMeterologicas.Nubosidad = nubosidadTextBox.Text.ToUpper();
                    condMeterologicas.Precipitaciones = precipitacionesTextBox.Text.ToUpper();
                    condMeterologicas.Viento = vientoTextBox.Text.ToUpper();
                    condMeterologicas.IdMuestra = muestra.Id;
                    condMeteroBL.addCondMetereologicas(condMeterologicas);
                }
                if (paramFisOrganolepticos != null)
                {
                    paramFisOrganolepticos.Color = colorTextBox.Text.ToUpper();
                    paramFisOrganolepticos.MateriaFlotante = materiaFlotanteTextBox.Text.ToUpper();
                    paramFisOrganolepticos.Observaciones = observacionesRichTextBox.Text.ToUpper();
                    paramFisOrganolepticos.Olor = olorTextBox.Text.ToUpper();
                    paramFisOrganolepticos.IdMuestra = muestra.Id;
                    parFisOrganoBL.addParFisOrganolepticos(paramFisOrganolepticos);
                }

                // Guardando la MuestraResumen
                muestraResumen.ABI = Convert.ToInt32(lblTotalAbi.Text);
                muestraResumen.IHF = Convert.ToInt32(lblTotalIHF.Text);
                if (Convert.ToInt32(lblTotalQBR.Text) > 0 && Convert.ToInt32(lblTotalQBR2.Text) == 0)
                {
                    muestraResumen.QBR_And = Convert.ToInt32(lblTotalQBR.Text);
                }
                else if (Convert.ToInt32(lblTotalQBR.Text) == 0 && Convert.ToInt32(lblTotalQBR2.Text) > 0)
                {
                    muestraResumen.QBR_And = Convert.ToInt32(lblTotalQBR2.Text);
                }
                muestraResumen.Cera = lblResultadoAbiQbr.Text;
                muestraResumen.NumMuestra = muestra.NumMuestra;
                muestraResumen.IdMuestra = muestra.Id;
                muesResumBL.AddMuestraResumen(muestraResumen);

                MessageBox.Show("Registro Correcto", "Registro",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
        }

        //Calculando RIOS ANDINOS
        private void btnCalcRiosAndinos_Click(object sender, EventArgs e)
        {
            CalcularCuenca();
            CalcularHidrologia();
            CalcularTramo();
            CalcularLecho();

            lblTotalRioAndino.Text = Convert.ToString(tCuenca + tHidrologia + tTramo + tLecho);
            MensajeRiosAndinos();
        }

        //Calculando RIOS ANDINOS-3500
        private void btnCalcRiosAndinos3500_Click(object sender, EventArgs e)
        {
            CalcularCuenca2();
            CalcularHidrologia2();
            CalcularTramo2();
            CalcularLecho2();

            lblTotalRioAndino2.Text = Convert.ToString(tCuenca2 + tHidrologia2 + tTramo2 + tLecho2);
            MensajeRiosAndinos2();
        }

        //Calculando IHF
        private void btnCalcIhf_Click(object sender, EventArgs e)
        {
            CalcularIncRapidos();
            CalcularFrecRapidos();
            CalcularCompSubstrato();
            CalcularRegVelocidad();
            CalcularPorSombra();
            CalcularElementos();
            CalcularCobVegetacion();

            lblTotalIHF.Text = Convert.ToString(tIncRapidos + tFrecRapidos + tCompSubstrato + tRegVelocidad + tPorCause + tElementos + tCobVegetacion);
            MensajeIHF();
        }

        //Calculando QBR
        private void btnCalcQbr_Click(object sender, EventArgs e)
        {
            CalcularGradCubierta();
            CalcularEstrCubierta();
            CalcularCalidCubierta();
            CalcularGradNaturalidad();

            lblTotalQBR.Text = Convert.ToString(tGradCubierta + tEstrCubierta + tCalCubierta + tGradNaturalidad);
            MensajeQBR();
        }

        //Calculando QBR-3500
        private void btnCalcQbr3500_Click(object sender, EventArgs e)
        {
            CalcularGradCubierta2();
            CalcularCalidCubierta2();
            CalcularGradNaturalidad2();

            lblTotalQBR2.Text = Convert.ToString(tGradCubierta2 + tCalCubierta2 + tGradNaturalidad2);
            MensajeQBR2();
        }

        //Calculando ABI
        private void btnCalcAbi_Click(object sender, EventArgs e)
        {
            CalcularABI();
            MensajeABI();
        }

        private void alturaTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void alturaTextBox_Leave(object sender, EventArgs e)
        {
            if ((alturaTextBox.Text == "") || (Convert.ToInt32(alturaTextBox.Text) <= 3500))
            {
                //rpvDentroAnalisis.Pages.Add (rpvRiosAndinos);
                //rpvDentroAnalisis.Pages.Add(rpvQbr);
                rpvDentroAnalisis.Pages.Remove(rpvRiosAndinos2);
                rpvDentroAnalisis.Pages.Remove(rpvQbr2);
            }
            else if (Convert.ToInt32(alturaTextBox.Text) > 3500)
            {
                rpvDentroAnalisis.Pages.Remove(rpvRiosAndinos);
                rpvDentroAnalisis.Pages.Remove(rpvQbr);
                //rpvDentroAnalisis.Pages.Add(rpvRiosAndinos2);
                //rpvDentroAnalisis.Pages.Add(rpvQbr2);
            }
        }

        private void txtCriterioAbi_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void btnBuscarAbi_Click(object sender, EventArgs e)
        {
            abiBindingSource.DataSource = abiBL.GetAllFromAbiByCriterio(txtCriterioAbi.Text);
            if (abiBindingSource.Count == 0)
            {
                MessageBox.Show("Dato no encontrado", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void txtCriterioAbi_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                abiBindingSource.DataSource = abiBL.GetAllFromAbiByCriterio(txtCriterioAbi.Text);
                if (abiBindingSource.Count == 0)
                {
                    MessageBox.Show("Dato no encontrado", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //PINTANDO LAS GRAFICAS DE QBR
        private void gradCubiertaDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < gradCubiertaDataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(gradCubiertaDataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        gradCubiertaDataGridView[0, count].Style.BackColor = Color.Gray;
                        gradCubiertaDataGridView[2, count].Style.BackColor = Color.Gray;
                        gradCubiertaDataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void estruCubiertaDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < estruCubiertaDataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(estruCubiertaDataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        estruCubiertaDataGridView[0, count].Style.BackColor = Color.Gray;
                        estruCubiertaDataGridView[2, count].Style.BackColor = Color.Gray;
                        estruCubiertaDataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void calidCubiertaDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < calidCubiertaDataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(calidCubiertaDataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        calidCubiertaDataGridView[0, count].Style.BackColor = Color.Gray;
                        calidCubiertaDataGridView[2, count].Style.BackColor = Color.Gray;
                        calidCubiertaDataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void gradoNaturalidadDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < gradoNaturalidadDataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(gradoNaturalidadDataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        gradoNaturalidadDataGridView[0, count].Style.BackColor = Color.Gray;
                        gradoNaturalidadDataGridView[2, count].Style.BackColor = Color.Gray;
                        gradoNaturalidadDataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        //PINTANDO LAS GRAFICAS DE QBR - 3500
        private void gradCubierta2DataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < gradCubierta2DataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(gradCubierta2DataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        gradCubierta2DataGridView[0, count].Style.BackColor = Color.Gray;
                        gradCubierta2DataGridView[2, count].Style.BackColor = Color.Gray;
                        gradCubierta2DataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void calidCubierta2DataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < calidCubierta2DataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(calidCubierta2DataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        calidCubierta2DataGridView[0, count].Style.BackColor = Color.Gray;
                        calidCubierta2DataGridView[2, count].Style.BackColor = Color.Gray;
                        calidCubierta2DataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void gradoNaturalidad2DataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                for (int count = 0; count < gradoNaturalidad2DataGridView.Rows.Count; count++)
                {
                    var id = Convert.ToInt32(gradoNaturalidad2DataGridView.Rows[count].Cells[1].Value);

                    if (id == 1 || id == 2 || id == 3 || id == 4)
                    {
                        gradoNaturalidad2DataGridView[0, count].Style.BackColor = Color.Gray;
                        gradoNaturalidad2DataGridView[2, count].Style.BackColor = Color.Gray;
                        gradoNaturalidad2DataGridView[3, count].Style.BackColor = Color.Gray;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }
    }
}
